package com.hqyj.system.service.impl;

import com.hqyj.system.mapper.SysRoleMapper;
import com.hqyj.system.model.SysRole;
import com.hqyj.system.service.SysRoleService;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class SysRoleServiceImpl implements SysRoleService {
    private static SysRoleMapper sysRoleMapper;
    private static SqlSession sqlSession;

    @Override
    public List<SysRole> queryAllSysRole() throws IOException {
        //1.读取配置文件（mybatis-config.xml）
        InputStream iStream = Resources.getResourceAsStream("mybatis/mybatis-config.xml");
        //2.创建SqlSessionFactoryBuilder构造器，得到SqlSessionFactory工厂
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(iStream);
        //3.获取Session对象
        sqlSession = sqlSessionFactory.openSession();
        //4.获取mapper代理对象
        sysRoleMapper = sqlSession.getMapper(SysRoleMapper.class);
        //############################ 业务 ################################
        List<SysRole> sysRoleList_db = sysRoleMapper.queryAllSysRole();
        //############################ 业务 ################################
        //提交事务
        sqlSession.commit();
        return sysRoleList_db;
    }

    @Override
    public int addSysRoleBySysRole(SysRole sysRole) throws IOException {
        //1.读取配置文件（mybatis-config.xml）
        InputStream iStream = Resources.getResourceAsStream("mybatis/mybatis-config.xml");
        //2.创建SqlSessionFactoryBuilder构造器，得到SqlSessionFactory工厂
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(iStream);
        //3.获取Session对象
        sqlSession = sqlSessionFactory.openSession();
        //4.获取mapper代理对象
        sysRoleMapper = sqlSession.getMapper(SysRoleMapper.class);
        //############################ 业务 ################################
        int n = sysRoleMapper.insertSelective(sysRole);


        //############################ 业务 ################################
        //提交事务
        sqlSession.commit();
        return n;
    }

    @Override
    public int deleteSysRoleByRoleId(int roleId) throws IOException {
        //1.读取配置文件（mybatis-config.xml）
        InputStream iStream = Resources.getResourceAsStream("mybatis/mybatis-config.xml");
        //2.创建SqlSessionFactoryBuilder构造器，得到SqlSessionFactory工厂
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(iStream);
        //3.获取Session对象
        sqlSession = sqlSessionFactory.openSession();
        //4.获取mapper代理对象
        sysRoleMapper = sqlSession.getMapper(SysRoleMapper.class);
        //############################ 业务 ################################
        int n = sysRoleMapper.deleteByPrimaryKey(roleId);


        //############################ 业务 ################################
        //提交事务
        sqlSession.commit();
        return n;
    }

    @Override
    public SysRole querySysRoleByRoleId(int roleId) throws IOException {
        //1.读取配置文件（mybatis-config.xml）
        InputStream iStream = Resources.getResourceAsStream("mybatis/mybatis-config.xml");
        //2.创建SqlSessionFactoryBuilder构造器，得到SqlSessionFactory工厂
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(iStream);
        //3.获取Session对象
        sqlSession = sqlSessionFactory.openSession();
        //4.获取mapper代理对象
        sysRoleMapper = sqlSession.getMapper(SysRoleMapper.class);
        //############################ 业务 ################################
        SysRole sysRole_db = sysRoleMapper.selectByPrimaryKey(roleId);

        //############################ 业务 ################################
        //提交事务
        sqlSession.commit();
        return sysRole_db;
    }

    @Override
    public int updateSysRoleBySysRole(SysRole sysRole) throws IOException {
        //1.读取配置文件（mybatis-config.xml）
        InputStream iStream = Resources.getResourceAsStream("mybatis/mybatis-config.xml");
        //2.创建SqlSessionFactoryBuilder构造器，得到SqlSessionFactory工厂
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(iStream);
        //3.获取Session对象
        sqlSession = sqlSessionFactory.openSession();
        //4.获取mapper代理对象
        sysRoleMapper = sqlSession.getMapper(SysRoleMapper.class);
        //############################ 业务 ################################
        int n = sysRoleMapper.updateByPrimaryKeySelective(sysRole);


        //############################ 业务 ################################
        //提交事务
        sqlSession.commit();
        return n;
    }

    @Override
    public SysRole querySysRoleByUserId(int userId) throws IOException {
        //1.读取配置文件（mybatis-config.xml）
        InputStream iStream = Resources.getResourceAsStream("mybatis/mybatis-config.xml");
        //2.创建SqlSessionFactoryBuilder构造器，得到SqlSessionFactory工厂
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(iStream);
        //3.获取Session对象
        sqlSession = sqlSessionFactory.openSession();
        //4.获取mapper代理对象
        sysRoleMapper = sqlSession.getMapper(SysRoleMapper.class);
        //############################ 业务 ################################
        SysRole sysRole_xz_db = sysRoleMapper.querySysRoleByUserId(userId);


        //############################ 业务 ################################
        //提交事务
        sqlSession.commit();
        return sysRole_xz_db;
    }
}
